package com.h3c.nem.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.h3c.nem.dto.TbPreWorkerDTO;
import com.h3c.nem.dto.TbPreWorkerSeaDTO;
import com.h3c.nem.entity.TbPreWorker;
import org.springframework.web.multipart.MultipartFile;

import java.io.File;
import java.util.List;
import java.util.Map;

/**
 * Copyright (C), 2020-2020, h3c
 * FileName: ITbPreWorkerService
 *
 * @Author: l22886
 * @Date: 2022-01-19
 * Description: tb_pre_worker service
 * Version: 1.0
 */
public interface ITbPreWorkerService extends IService<TbPreWorker> {

    /**
     * @title: selectFuzzyByDto
     * @description: 模糊查询操作
     * @params: [ dto ]
     * @return: java.util.List
     * @createTime: 2022-01-19
     * @version: 1.0
     * @author: l22886
     */
    public List<TbPreWorkerDTO> selectFuzzyByDto(TbPreWorkerSeaDTO dto);

    /**
     * @title: insertDto
     * @description: 插入操作
     * @params: [ dto ]
     * @return: Integer
     * @createTime: 2022-01-19
     * @version: 1.0
     * @author: l22886
     */
    public Integer insertDto(TbPreWorkerDTO dto);

    /**
     * @title: updateDto
     * @description: 修改操作
     * @params: [ dto ]
     * @return: Integer
     * @createTime: 2022-01-19
     * @version: 1.0
     * @author: l22886
     */
    public Integer updateDto(TbPreWorkerDTO dto);

    /**
     * @title: deleteDto
     * @description: 删除操作
     * @params: [ dto ]
     * @return: Integer
     * @createTime: 2022-01-19
     * @version: 1.0
     * @author: l22886
     */
    public Integer deleteDto(TbPreWorkerDTO dto);

    File exportPreWorker(TbPreWorkerSeaDTO paramsDTO);

    /**
     * 按年月日计算待入职员工总数
     * @param time 时间
     * @param deptId 部门id
     * @return
     */
    Map<String,Map<Object,Object>> calenderStatistics(String time, String deptId);

    /**
     * 导入修改待入职员工信息
     * @param file 导入文件
     */
    void importPreWorker(MultipartFile file);

    /**
     * 发送通知给导师（邮件
     * @param workerIds
     */
    void sendMessageToTeacher(List<String> workerIds);

    /**
     * 发送通知给主管（邮件
     * @param workerIds
     */
    void sendMessageToManager(List<String> workerIds);

    void updatePlanTime(TbPreWorkerDTO paramsDTO);

    void syncPreWorker();

    void confirmChangePlanDate(TbPreWorkerDTO param);
}
